Virtualization allows multiplexing of an underlying host machine between different virtual machines. The host machine allocates a certain amount of its resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems (referred to as guest operating systems). A software layer that provides the virtualization is commonly referred to as a hypervisor (also known as a virtual machine monitor (VMM)). The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
A host machine can accommodate more virtual machines than the size of its physical memory allows. Using virtual memory techniques, the host machine can give each virtual machine the impression that it has a contiguous address space, while in fact the memory used by the virtual machine may be physically fragmented and even overflow to disk storage. When the host machine needs to free up memory, it selects memory pages that have been assigned to virtual machines, and pages out the contents of those memory pages to secondary storage. When the virtual machines attempt to access those memory pages, the host machine then pages in the contents of the memory page by reading the contents that have been stored in the secondary storage and writing those contents back to memory. Paging out and paging in memory pages requires input/output (I/O) operations, which can cause significant delay for the virtual machine.
International Business Machines (IBM®) has developed a processor architecture (called System z machine architecture) that includes hardware support for special Extract and Set Storage Attributes (ESSA) instructions between the host machine and virtual machines regarding the state of memory pages assigned to those virtual machines. Using the ESSA instructions, IBM's system z machines improve the performance of memory management by identifying memory pages whose contents do not need to be preserved, thereby eliminating disk I/Os during memory eviction. However, IBM's system z machines rely on hardware support for this functionality. There is no similar hardware or software support for such memory management optimization in other processor architectures, such as x86 processor architectures.